<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue自定义指令</title>
    <!--引入Vue-->
    <script type="text/javascript" src="./js/vue.js"></script>
</head>

<body>
    <div id="root">
        <!--自定义v-big指令，让绑定值变大10-->
        <h2>方大10倍后b值是：<span v-big="b"></span></h2>
        <!--自定义v-wei-wyh指令-->
        <input type="text" v-wei-wyh:value="b">
    </div>
</body>
<script>
    //定义全局的指令:在Vue身上，多个vm都可以用
    // Vue.directives('wei-wyh', {
    //     //指令与元素成功绑定时
    //     bind: function(element, binding) {
    //         element.value = binding.value * 20
    //     },
    //     //指令所在元素被插入页面时
    //     inserted: function(element, binding) {
    //         element.focus()
    //     },

    //     //指令所在的模板被重新解析时
    //     undate: function(element, binding) {
    //         element.value = binding.value * 20
    //     }
    // })

    const vm = new Vue({
        el: '#root',
        data: {
            b: "10 "
        },

        //自定义指令用directives
        directives: {
            //element指当前绑定的节点元素
            //binding:是一个对象里面包含:
            //name:指令名
            //value:指令的绑定值
            //oldValue：指令绑定的前一个值
            //expression :字符串形式的指令表达式

            //big函数何时会被调用，1.指令与元素成功绑定时，2.指令所在的模板被重新解析时

            //函数形式的简写形式
            big(element, binding) {
                //  console.log(element, binding)
                element.innerText = binding.value * 10
            },

            //对象形式的写法，这块是个对象，遇到键名带特殊字符的可以带""
            "wei-wyh": {
                //指令与元素成功绑定时
                bind: function(element, binding) {
                    element.value = binding.value * 20
                },
                //简写
                // bind(element, binding) {
                //     element.value = binding.value * 20
                // },
                //指令所在元素被插入页面时
                inserted: function(element, binding) {
                    element.focus()
                },
                //简写
                // inserted(element, binding) {
                //     element.focus()
                // },

                //指令所在的模板被重新解析时
                undate: function(element, binding) {
                    element.value = binding.value * 20
                }

                //简写
                // undate(element, binding) {
                //     element.value = binding.value * 20
                // },

            }
        }
    });
</script>

</html>